/**
 * 
 */
package br.edu.catolica.sadbc.manager;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.framework.EntityQuery;

import br.edu.catolica.sadbc.core.exception.BusinessObjectException;
import br.edu.catolica.sadbc.core.manager.AbstractCrudManager;
import br.edu.catolica.sadbc.entity.AtividadeDocente;
import br.edu.catolica.sadbc.entity.filter.AtividadeDocenteSearchFilter;

/**
 * @author robert.resende
 *
 */
@AutoCreate
@Name(value = "atividadeDocenteManager")
public class AtividadeDocenteManager extends AbstractCrudManager<AtividadeDocente> {
	
	private static final String ejbql = "select obj from AtividadeDocente obj";
	private String[] restriction = {
			" obj.docente.id = #{atividadeDocenteSearchFilter.docente.id} ",
			" obj.semestre = #{atividadeDocenteSearchFilter.semestre} ",
			" obj.ano >= #{atividadeDocenteSearchFilter.anoInicio} ",
			" obj.ano <= #{atividadeDocenteSearchFilter.anoFim}"};

	@SuppressWarnings({ "unchecked", "rawtypes" })
	public List<AtividadeDocente> pesquisar(AtividadeDocenteSearchFilter atividadeDocenteSearchFilter) {
		List<AtividadeDocente> lista = new ArrayList<AtividadeDocente>();
		EntityQuery entityQuery = new EntityQuery();
		entityQuery.setEjbql(ejbql);
		entityQuery.setOrder("ano");
		entityQuery.setRestrictionExpressionStrings(Arrays.asList(restriction));
//		entityQuery.setRestrictionLogicOperator(operator);
		lista = entityQuery.getResultList();
		log.info("Lista vazia: " + lista.isEmpty());
		log.info("Tamanho da lista: " + lista.size());
		return lista;
	}
	
	@Override
	public String excluir(AtividadeDocente atividadeDocente) throws BusinessObjectException {
		return super.excluir(atividadeDocente);
	}

}
